This invention relates to telephone call routing systems known as automatic call distributors (ACDs) and more particularly to elements of such systems for optimally routing incoming calls based on caller needs. Automatic call distributors provide automatic routing of incoming telephone calls in conjunction with a private switchboard or Private Branch Exchange (PBX) equipment through caller responses to prompts. An ACD is frequently used by relatively large companies to screen calls as part of telephone-based support for services to remote users or for routing queries regarding products or services for sale.
A significant requirement of an ACD system is a need for continuous and substantially real-time system operation and availability of access to data. In an ACD system of interest, to minimize the adverse impact of failure of key hardware, the system configuration includes extensive redundancy.
Referring to FIG. 1 in a simplified representation of an ACD 10, among the subsystems are a primary system controller 12 with a central processor 14, random access memory 116, associated software 26 such as operating system software and database management systems, mass storage complex 18 and I/O ports 20, 21, 22 coupled to a subsystem bus 24. Among the redundant subsystems are a redundant system controller 112 with a central processor 114, random access memory 16, duplicate associated software 126, mass storage complex 118 and I/O ports 120, 121, 122 coupled to a bus 124. I/O ports 20 and 120 are coupled together via dedicated data transfer path 40, which may be an ethernet link. A first switching means 34 and a second switching means 35 under control of CPU 114 via control line 29 control the routing of transactions to and from agent telesets 36, 37, caller trunks 38, 39 and process I/O ports with internal buffers 22, 122 on one hand and transactions to and from management terminals 41, 42 and process I/O ports 21, 121.
Associated with the CPU 114 is an element which is operative primarily in connection with the redundant system controller 112. It is a module which is herein called a controlling means 126 that monitors the operation of the redundant system controller 112. A duplicate controlling means 26 is associated with the CPU 14. Together with data transfer path 40 their operation assures that each control system 12, 112 operates synchronously, state by state. The redundant system controller 112 is normally in hot synchronous standby operation until a fault is sensed by failure to receive "still alive" signals via data transfer path 40. Specifically, the redundant system controller 112 follows and imitates operation of the primary system controller state for state so that in the event of failure in the primary controller 12, the redundant system controller 112 simply resumes functioning by causing a switchover of the management terminals 41, 42, the agent telesets 36, 37 and the caller trunks 38, 39 to the redundant system controller 112 through controlling the switches 35, 34 on control line 29, so that the redundant system controller 112 takes over, transparently and without perceptive disruption of service, all functions of the primary system controller 12, including call handling and data collection, until the failure can be corrected.
However, in the course of operation of the redundant system controller 112, since the data collection continues only in the redundant system, the primary system controller 12 loses synchronization.
In the past, the primary system controller 12 could be resynchronized only by suspending operations of the ACD system and shutting down the entire ACD system, and then transferring a copy of the then-stable stored information to the then-repaired and functional primary control system and reinitiating the system. Shutting down a real-time system such as an ACD system 10 is an extremely inconvenient and disruptive process which in the past generally required that the system be shut down and restored only during the least active time of the day or week (e.g., Monday mornings at 3 am). Restoration typically requires many tens of minutes, as large amounts of data must be transferred. In the meantime, and prior to restoration, reliable operation of the ACD system remained at risk due to the potential for failure of the secondary control system 112.
In order to solve this problem, what is needed is a reliable mechanism for resynchronizing the primary system controller 12 to the redundant system controller 112 in an ACD system without interrupting real-time operation and so that the primary system controller can transparently resume operational control and the redundant system controller can return to synchronous standby operation.